// MIR for `shift_unsigned` after built

fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i128; 3]) {
    debug small => _1;
    debug big => _2;
    debug a => _3;
    debug b => _4;
    debug c => _5;
    let mut _0: ([u8; 3], [i128; 3]);
    let mut _6: [u8; 3];
    let mut _7: u8;
    let mut _8: u8;
    let mut _9: u8;
    let mut _10: bool;
    let mut _11: u8;
    let mut _12: u8;
    let mut _13: u32;
    let mut _14: bool;
    let mut _15: u8;
    let mut _16: u8;
    let mut _17: u128;
    let mut _18: bool;
    let mut _19: [i128; 3];
    let mut _20: i128;
    let mut _21: i128;
    let mut _22: u8;
    let mut _23: bool;
    let mut _24: i128;
    let mut _25: i128;
    let mut _26: u32;
    let mut _27: bool;
    let mut _28: i128;
    let mut _29: i128;
    let mut _30: u128;
    let mut _31: bool;

    bb0: {
        StorageLive(_6);
        StorageLive(_7);
        StorageLive(_8);
        _8 = _1;
        StorageLive(_9);
        _9 = _3;
        _10 = Lt(_9, const 8_u8);
        assert(move _10, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7];
    }

    bb1: {
        _7 = Shr(move _8, move _9);
        StorageDead(_9);
        StorageDead(_8);
        StorageLive(_11);
        StorageLive(_12);
        _12 = _1;
        StorageLive(_13);
        _13 = _4;
        _14 = Lt(_13, const 8_u32);
        assert(move _14, "attempt to shift right by `{}`, which would overflow", _13) -> [success: bb2, unwind: bb7];
    }

    bb2: {
        _11 = Shr(move _12, move _13);
        StorageDead(_13);
        StorageDead(_12);
        StorageLive(_15);
        StorageLive(_16);
        _16 = _1;
        StorageLive(_17);
        _17 = _5;
        _18 = Lt(_17, const 8_u128);
        assert(move _18, "attempt to shift right by `{}`, which would overflow", _17) -> [success: bb3, unwind: bb7];
    }

    bb3: {
        _15 = Shr(move _16, move _17);
        StorageDead(_17);
        StorageDead(_16);
        _6 = [move _7, move _11, move _15];
        StorageDead(_15);
        StorageDead(_11);
        StorageDead(_7);
        StorageLive(_19);
        StorageLive(_20);
        StorageLive(_21);
        _21 = _2;
        StorageLive(_22);
        _22 = _3;
        _23 = Lt(_22, const 128_u8);
        assert(move _23, "attempt to shift left by `{}`, which would overflow", _22) -> [success: bb4, unwind: bb7];
    }

    bb4: {
        _20 = Shl(move _21, move _22);
        StorageDead(_22);
        StorageDead(_21);
        StorageLive(_24);
        StorageLive(_25);
        _25 = _2;
        StorageLive(_26);
        _26 = _4;
        _27 = Lt(_26, const 128_u32);
        assert(move _27, "attempt to shift left by `{}`, which would overflow", _26) -> [success: bb5, unwind: bb7];
    }

    bb5: {
        _24 = Shl(move _25, move _26);
        StorageDead(_26);
        StorageDead(_25);
        StorageLive(_28);
        StorageLive(_29);
        _29 = _2;
        StorageLive(_30);
        _30 = _5;
        _31 = Lt(_30, const 128_u128);
        assert(move _31, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb6, unwind: bb7];
    }

    bb6: {
        _28 = Shl(move _29, move _30);
        StorageDead(_30);
        StorageDead(_29);
        _19 = [move _20, move _24, move _28];
        StorageDead(_28);
        StorageDead(_24);
        StorageDead(_20);
        _0 = (move _6, move _19);
        StorageDead(_19);
        StorageDead(_6);
        return;
    }

    bb7 (cleanup): {
        resume;
    }
}
